package com.mi.service.impl;

import java.util.List;

import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.mi.bean.CustomersBean;
import com.mi.db.DBProvider;
import com.mi.service.ILoginService;
import com.mi.utils.MyUtils;

public class LoginServiceImpl implements ILoginService {

	/**
	 * 保存用户信息
	 * 
	 * @param adminB 参数实体
	 * @return 操作结果
	 */
	@Override
	public int saveOrUpdateAdminInf(CustomersBean customerB) {
		// 默认返回值
		int i = 0;
		// 新增和修改的区别在于：参数实体类的主键字段是否为null，为null则是新增操作，不为null则是修改操作
		// 新增的sql语句
		if (customerB != null) {
			// 新增操作
			if (customerB.getCustomer_id() == null) {
				// 新增sql语句
				String strSql = "insert into customers (customer_tel,customer_psw) values(?,?)";
				// 调用db层进行数据库操作
				i = MyUtils.getInstance(DBProvider.class).update(strSql, customerB.getCustomer_tel(),
						customerB.getCustomer_psw());
			} else {
				// 修改操作
			}
		}
		return i;
	}

	/**
	 * 根据用户名/手机号/邮箱和密码，进行后台数据库的查询
	 * 
	 * @param customerB 要查询的实体类
	 * @return 返回查询的结果集
	 */
	@Override
	public List<CustomersBean> queryLoginInfo(CustomersBean customerB) {
		// 调用db层进行数据库操作
		// 登录查询语句

		// 获取用户的输入值
		String strCus = customerB.getCustomer_name();
		/*System.out.println("登录-要查询的customer_name"+strCus);*/
		// 判断是手机号还是邮箱，选择不同的查询语句，进行相应查询
		if (strCus.contains("@")) {
			// 邮箱登录
			String sql = "select * from customers where customer_email = ? and customer_psw = ?";
			// 调用db层进行数据库操作
			// ResultSetHandler接口de实现类--BeanListHandler把结果集中的每行数据都封装成一个指定的JavaBean对象
			// 将数据封装成list<JavaBean>形式
			List<CustomersBean> lstCustomers = MyUtils.getInstance(DBProvider.class).query(sql,
					new BeanListHandler<CustomersBean>(CustomersBean.class), customerB.getCustomer_name(),
					customerB.getCustomer_psw());
			return lstCustomers;
		} else {
			// 手机号登录
			String sql = "select * from customers where customer_tel = ? and customer_psw = ?";
			// 调用db层进行数据库操作
			// ResultSetHandler接口de实现类--BeanListHandler把结果集中的每行数据都封装成一个指定的JavaBean对象
			// 将数据封装成list<JavaBean>形式
			List<CustomersBean> lstCustomers = MyUtils.getInstance(DBProvider.class).query(sql,
					new BeanListHandler<CustomersBean>(CustomersBean.class), customerB.getCustomer_name(),
					customerB.getCustomer_psw());
			return lstCustomers;
		}
	}

	/* 
	 * 根据手机号，查询该用户是否存在，返回查询结果
	 */
	@Override
	public List<CustomersBean> queryLoginTel(CustomersBean customerB) {
		// 查询的sql语句
		String sql = "select * from customers where customer_tel = ?";
		// 调用db层进行数据库操作
		// ResultSetHandler接口de实现类--BeanListHandler把结果集中的每行数据都封装成一个指定的JavaBean对象
		// 将数据封装成list<JavaBean>形式
		List<CustomersBean> lstCustomers = MyUtils.getInstance(DBProvider.class).query(sql,
				new BeanListHandler<CustomersBean>(CustomersBean.class), customerB.getCustomer_tel());
		return lstCustomers;
	}
}
